Golang 极速教程 指针 (2) 值传递与指针传递 函数参数传递两种方式的区别
package main
import "fmt"
func value(ss string) {
fmt.Println("value():")
fmt.Println("ss = ", ss)
fmt.Println("&ss = ", &ss)
fmt.Println("=====================")
ss = "Kotlin"
fmt.Println("ss = ", ss)
fmt.Println("&ss = ", &ss)
}
func value2(ss string) {
fmt.Println("value2():")
fmt.Println("ss = ", ss)
fmt.Println("&ss = ", &ss)
fmt.Println("=====================")
ss = "Kotlin"
fmt.Println("ss = ", ss)
fmt.Println("&ss = ", &ss)
}
func pointer(ps *string) {
fmt.Println("pointer():")
fmt.Println("ps = ", ps)
fmt.Println("&ps = ", &ps)
fmt.Println("*ps = ", *ps)
fmt.Println("=====================")
*ps = "Kotlin"
fmt.Println("ps = ", ps)
fmt.Println("&ps = ", &ps)
fmt.Println("*ps = ", *ps)
}
func pointer2(ps *string) {
fmt.Println("pointer2():")
fmt.Println("ps = ", ps)
fmt.Println("&ps = ", &ps)
fmt.Println("*ps = ", *ps)
fmt.Println("=====================")
*ps = "Kotlin"
fmt.Println("ps = ", ps)
fmt.Println("&ps = ", &ps)
fmt.Println("*ps = ", *ps)
}
func main() {
s := "golang"
fmt.Println("s = ", s)
fmt.Println("&s = ", &s)
fmt.Println("__________________________________________________")
value(s)
fmt.Println("__________________________________________________")
value2(s)
fmt.Println("__________________________________________________")
pointer(&s)
fmt.Println("__________________________________________________")
pointer2(&s)
}