golang - go语言下有类似jsoup的库吗。
问 题 最近要完成一个html解析的工作,请问一下go语言下有类似jsoup的库吗 解决方案 不知道你的jsoup指的是什么,不过go有个类似jquery专门用于dom解析的库。 https://github.com/PuerkitoBi...
232 2022-07-19
编程技术问答社区
golang - go语言读取json格式字符串问题,在线等!
问 题 package main import ( "encoding/json" "fmt" ) func main ( ) { str:=`{"repositories":["heapster","mysql","zeppelin"]}` byteStr:=[]byte(str) type Repository struct{ repositories []string } var repo Repository json. Unmarshal ( byteStr , &repo ) fmt.Println(repo) } 最后输出为空的数组,请问哪里错了??? 解决方案 你这个是struct的item都是私有的,只能当前package调用,要是传给json的话,就会读取不到 定义struct的时候大写首字母即可 func main(){ str
212 2022-07-19
编程技术问答社区
golang - runtime error: invalid memory address or nil pointer dereference
问 题 agent.go文件 package db import ( "bytes" "fmt" "github.com/open-falcon/common/model" "github.com/open-falcon/hbs/g" "log" "net/http" ) func UpdateAgent(agentInfo *model.AgentUpdateInfo) { sql := "" if g.Config().Hosts == "" { sql = fmt.Sprintf( "insert into host(hostname, ip, agent_version, plugin_version) values ('%s', '%s', '%s', '%s') on duplicate key update ip='%s', agent_version=
3972 2022-07-19
编程技术问答社区
golang - go语言 指针问题
教程上说struct是值类型. 为什么这段代码会显示这样的结果为什么time1存储的不是一个地址? 是不是&取地址本身返回的是一个包含指针的结构体?
230 2022-07-19
编程技术问答社区
golang - 这个out对象是怎么实现xx接口的?
问 题 package main import ( "io" "os" ) // var ( // kernel32DLL = syscall.NewLazyDLL("kernel32.dll") // setConsoleTextAttributeProc = kernel32DLL.NewProc("SetConsoleTextAttribute") // ) type xx interface { Fd() uintptr } // type LogBackend struct { // Logger *log.Logger // } func main() { // NewLogBackend(os.Stdout, "", 0) test(os.Stdout) } func test(out io.Writer) { if _, ok := out.(xx); ok
440 2022-07-19
编程技术问答社区
go语言 - golang如何模仿一个append函数
问 题 任何类型的slice和类型都能当做参数 处理以后,返回一个同类型的slice 尝试用interface{}和types.Array, types.Slice都似乎不行 解决方案 在 Go 是 强类型编译型语言 和 没有泛型(或模板) 两大前提下, 这个问题没有优雅的解。只能采用一些变通的方法,比如 改用 container/list 包提供的 List ;
156 2022-07-19
编程技术问答社区
golang - go build每次都要重新编译全部文件吗?
问 题 用Jetbrains的Gogland IDE看Consul项目的源码,打断点调试运行,发现每次启动程序都要编译半分钟才能运行,但是我对程序并没有做任何修改。命令行使用go build也是每次都等半分钟。 求解惑 解决方案 官方库是不会重编译的,但是导入 get 来的库是每次都会重编译的, 因为没有生成 .a 文件,如果执行 go install xxxxxx 就会生成.a 文件用来缓存,这时候如果你导入的包没有修改,就不会再重编译了 可以参考 Russ Cox 的话
950 2022-07-19
编程技术问答社区
golang - gorm 更新表的时候,总是把created_at字段也更新的,很奇怪。。。
这是我的表定义 type Notice struct { Id int `gorm:"primary_key"` Title string `gorm:"type:varchar(20);not null"` Content string `gorm:"type:text;not null"` CreatedAt time.Time `gorm:"not null"` UpdatedAt time.Time `gorm:"not null"` AdminId int `gorm:"not null"` } 数据库定义: Field Type Null Key Default Extra id int(11) NO PRI NULL auto_increment title varchar(20) NO NULL content text NO NULL creat
2054 2022-07-17
编程技术问答社区
golang - 关于 Go 语言中 const 的问题
问 题 本问题来自《Go语言圣经》中 GIF 动画 中的代码,作用是生成一个利萨如图形 GIF。 代码如下: // Lissajous generates GIF animations of random Lissajous figures. package main import ( "fmt" "image" "image/color" "image/gif" "io" "math" "math/rand" "os" "reflect" ) var palette = []color.Color{color.White, color.RGBA{0x6C, 0x9F, 0xB4, 0xff}} const ( whiteIndex = 0 // first color in palette greenIndex = 1 // second color in palette )
1082 2022-07-17
编程技术问答社区
golang - go list删除元素问题?
问 题 package main import ( "container/list" "fmt" ) type Person struct { Name string Age int } func main() { l := list.New() //创建一个新的list var person = &Person{ Name: "salamander", Age: 22, } var person2 = &Person{ Name: "saber", Age: 22, } l.PushBack(person) l.PushBack(person2) for e := l.Front(); e != nil; e = e.Next() { fmt.Print(e.Value) } } 现在我
154 2022-07-17
编程技术问答社区
编程 - Go语言如何在闭包里使用全局变量?
问 题 package main import ( "fmt" "os" "path/filepath" ) var Files []string func main() { /* wc, _ := os.Getwd() var directory = flag.String("dir", wc, "which dir you wanna scan") flag.Parse() */ err := Scan("/usr/local/var/www/app") if err == nil { fmt.Println("files:") fmt.Sprintf("%v\n", Files) } else { fmt.Println("errors:") fmt.Fprintf(os.Stderr, "%v", err) }
144 2022-07-17
编程技术问答社区
golang - 如何理解“在函数之间传递变量时,总是以值的方式传递的”这句话?
问 题 在 Golang 中,如何理解“在函数之间传递变量时,总是以值的方式传递的”这句话? 请举例说明,谢谢! 解决方案 其含义就是函数体内使用的形参全部都是实参的拷贝,改变形参不会影响到实参,题主要举例,我就举个例好了: func test1(a int) { a = 10 } func test2 (b []int){ b = []int{100,200} } func test3 (c *string){ str := "hello" c = &str } func main() { a := 1 test1(a) fmt.Println(a) // 1 b := []int{1,2} test2(b) fmt.Println(b) // [1 2] str := "hi" c := &str test3(c) fmt.Println(*c
136 2022-07-17
编程技术问答社区
golang - 如何实现多态变参数的求和?
问 题 求问下面的Add2这里怎么实现?sum为interface好像没法任意求和? func Add(vars ... int)(ret int){ var sum int for _,v := range vars { //fmt.Println("v",v) sum += v } return sum } //这里怎么实现?sum为interface好像没法任意求和? func Add2(vars ... interface{})(ret interface{}){ /* var sum interface{} for _,v := range vars { switch v.(type){ case int: sum += v case float64: sum += v
156 2022-07-17
编程技术问答社区
golang - go编译出来的文件在windows,Linux上都是无依赖的?
问 题 编译出来的文件都是调用操作系统的C接口的吗? 解决方案 go编译出来的文件在windows,Linux上都是无依赖的? golang 独立实现了 Runtime,编译产生的二进制文件包含了程序运行的 runtime,如果项目中不引入其他外部动态库的依赖,那么可以说是无依赖的; 编译出来的文件都是调用操作系统的C接口的吗? C 有自己的runtime,而 golang 的 runtime 和 C 的 runtime 一样,封装了syscall(操作系统提供的API口) 更详细的信息你可以参考这篇文章:也谈Go的可移植性
558 2022-07-17
编程技术问答社区
go语言如何把mysql查询的数据保存到结构体或者map啊?
问 题 我用的github.com/go-sql-driver/mysql这个驱动,我像下面这样写没有报错,但是里面的数据为空或者0 type data struct { id int name string weight int } rows, _ := db.Query("select * from test where id = ?", 2) for rows.Next() { line := data{} err = rows.Scan(&line) log.Println(line) } 运行结果 2017/07/17 13:37:50 {0 0} 存到map的代码 rows, _ := db.Query("select * from test where id = ?", 2) columns, _ := rows.Columns() length := len(column
270 2022-07-17
编程技术问答社区
go语言 - golang对channel的使用,可以类比现实生活中的什么情景?
问 题 本人是golang萌新,第一次接触channel,有点抽象,也没怎么接触过c/c++,请问日常生活中,有什么可以类比的呢? 解决方案 可以类比到生活中的管道或者是流水线传送带,channel可以写入或者读取,channel写入的时候就像是往传送带上放入货物,读取channel就像是从传送带上取货物。 channel分为buffered和立即阻塞的,取决于你是如何初始化这个channel的: 缓冲channel: var c = make(chan int,10) 这样的channel就像容量为10的传送带,上面可以放10个货物,如果放满了,就不能再放了(go程阻塞),只能等取走之后才可以继续放(go程继续执行)。 而非缓冲的channel: var c = make(chan int) 这样的channel就像就只能放1个货物传送带,放入货物直到这个货物被取走,这个工作流程都是停止(阻塞)在这里的。在goroutine中的表现就是该go程被
148 2022-07-17
编程技术问答社区
golang - go http 如何提取product_category[]这样的数组参数呢?
问 题 product_category[]这样的参数,php的会把它转化为数组,go的话,难道要我自己拼接起? 解决方案 不用,拼接,对于名字一样的form元素,Go会用[]string来存储的。 比如: package main import ( "net/http" ) type helloHandler struct{} func (h *helloHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { r.ParseForm() if ids, existed := r.PostForm["id"]; existed { for _, id := range ids { w.Write([]byte(id + ",")) } } } func main() { http.Handl
920 2022-07-17
编程技术问答社区