int/string互转
1 |
|
int64/string直接互转
1 | str := strconv.FormatInt(9223372036854775808,10) //"9223372036854775808" |
string和float32/64 互转
1 | f64,err := strconv.ParseFloat("3.12345678",64) //3.12345678 |
1 | s1 := strconv.FormatFloat(3.12345678, 'f', -1, 32)//float32,3.1234567 |
202050526
golang 具有相同字段的两个结构体类型可以相互转换 是否正确?举例说明
这个说法不完全正确。让我详细解释并举例说明:
准确的答案
不完全正确。Go语言中具有相同字段的两个结构体类型:
- 不能直接赋值转换(会编译错误)
- 可以显式类型转换(如果底层结构相同)
- 需要满足特定条件
详细规则
1. 显式转换的条件
两个结构体可以相互转换,当且仅当:
- 字段名称、类型、顺序完全相同
- 标签(tag)可以不同
1 | type A struct { |
2. 不能转换的情况
1 | // 字段顺序不同 |
3. 特殊情况
匿名结构体可以直接赋值:
1 | type Person struct { |
总结
- 相同字段的不同结构体类型是不同的类型
- 可以进行显式类型转换,但不能直接赋值
- 转换需要字段名称、类型、顺序完全匹配
- 这是Go语言类型安全设计的体现
原文链接: https://dashen.tech/2019/12/02/Golang中的常用转换/
版权声明: 转载请注明出处.