初级会员
  • 第 57601 位会员
  • Atticus
  • 2020-10-28 13:43:48
  • Offline
  • 20 4

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 如3楼所说,tag应放在``内,另外,如果可能的话建议改下yaml格式: ```golang package main import ( "fmt" "gopkg.in/yaml.v2" "os" ) var yamlStr string = ` import: "/testlist.yaml" tests: - test: "xxx_invalid_test" description: > "xxx at a higher priv mode" iterations: 13 ` type Config struct { Import string `yaml:"import"` Tests []struct { Test string `yaml:"test"` Description string `yaml:"description"` Iterations int `yaml:"iterations"` } `yaml:"tests"` } func main() { var c Config err := yaml.Unmarshal([]byte(yamlStr), &c) if err != nil { fmt.Println(err) os.Exit(-1) } fmt.Println(c.Tests[0].Description) } ``` > "xxx at a higher priv mode"
  • 你发一下你的yaml文件啊
  • 问题一楼已经说了,可以这么改进 ```golang package main import ( "fmt" "io/ioutil" ) type Page struct { Title string Body []byte } func (p *Page) load(title string) { p.Title = title body, err := ioutil.ReadFile(title) if err != nil { fmt.Println("load file err:", err) } p.Body = body } ```
  • 个人理解,你在对通道元素的发送、接收外部封装了锁,确实保证了同一时间要么在向通道写元素,要么在从通道里面读元素,但是由于发送/接收操作都在go routine中实现,因此两种情况会出现死锁: * 接收操作先获取到锁:此时由于通道中没有元素,接收的routine会一直阻塞,且由于锁的原因,发送routine始终无法竞争到锁,更别提向通道发送元素 * 发送routine连续5次竞争到锁或者接收routine连续5次竞争到锁的情况:由于通道容量只有5,连续接收5个或者连续发送5个元素后均无法再继续操作,此时也会阻塞