go - 具有切片结构的隐式类型
问题描述
如果我有这样的文件:
package main
import "fmt"
type Language struct {
Example []string
Link []string
}
func main() {
o := Language{
{".go", "go.ps1"},
{"golang.org", "go.dev"},
}
fmt.Println(o)
}
我得到这个结果:
missing type in composite literal
我发现我可以这样解决:
[]string{".go", "go.ps1"},
[]string{"golang.org", "go.dev"},
但这是严格要求的吗?我认为 Go 会根据struct
定义知道每个属性的类型。
解决方案
这里的问题不是编译器不知道类型,而是复合文字的语法需要类型:
https://golang.org/ref/spec#Composite_literals
字符串数组文字是[]string{"a","b",","c"}
,不是{"a","b","c"}
。
推荐阅读
- java - 基于百分比分布算法的负载均衡器
- activemq - 高可用且负载均衡的 ActiveMQ 集群
- postgresql - 如何聚合 Postgres 表以便 ID 是唯一的并且列值收集在数组中?
- ruby-on-rails - 无法加载这样的文件 - sqlite3/sqlite3_native (LoadError) on ruby on rails
- python - 当相同参数具有不同精度(由于非确定性行为)时的超参数调整方法 - LSTM 训练 Tensorflow
- node.js - Google Auth - 总是提示授权,我应该如何处理刷新令牌?
- mysql - 使用 OR 子句查询需要很长时间,但它们的部分非常快
- java - 无法编译安卓应用
- swift - Swift Firebase 防止用户多次投票并显示平均评分
- javascript - 当用户滚动到部分时,修复了页面顶部部分的标题 div