Rob*_*mba 3 string type-conversion go type-alias
例:
type MyString string
var s = "very long string"
var ms = MyString(s)
var s2 = string(s)
Run Code Online (Sandbox Code Playgroud)
是(ms或将完成)s2的完整副本?或者它们只是一个字符串结构副本(它将实际值保存在指针中)?如果我们将它传递给函数怎么办?例如:s[]byte(s)
func foo(s MyString){
...
}
foo(ms(s)) // do we copy s here?
Run Code Online (Sandbox Code Playgroud)
特定规则适用于数字类型之间或字符串类型之间的(非常量)转换.这些转换可能会改变
x运行时成本并导致运行时成本.所有其他转换仅更改类型,但不更改表示x.
因此,在自定义类型的基础类型之间进行转换并不会复制.
将值传递给函数或方法时,会生成并传递副本.如果将a传递string给函数,则只会string复制和传递描述该函数的结构,因为strings是不可变的.
如果传递切片也是如此(切片也是描述符).传递切片将创建切片描述符的副本,但它将引用相同的基础数组.
| 归档时间: |
|
| 查看次数: |
572 次 |
| 最近记录: |