package main
import "fmt"
func main()
s3 := int
fmt.println("s1: ", s1)
fmt.printf("s2:%v\n", s2)
fmt.printf("s2:%t\n", s2)
fmt.println("s3: ", s3)
}
輸出
p1 0xc00000a0d0
*p1 1
&p1 0xc000006028
s1: &
s2:[0xc00000a0d0]
s2:*int
s3: [1 2]
s1 將建立乙個int型別的匿名變數,初始化為int型別的零值,然後返回變數位址,返回的指標型別為 *int 。
s2 宣告建立乙個int指標型別的空切片。
s3 宣告建立乙個int型別的切片,初始化字面量1,2。
s1是指標位址,s2是存放指標位址的切片,s3就是乙個切片。
用new建立變數和普通變數宣告語句方式建立變數沒有什麼區別,除了不需要宣告乙個臨時變數的名字外,還可以在表示式中使用new(t)。new函式類似是一種語法糖,直接返回變數的位址,而不是乙個新的基礎概念。
下面的兩個newint函式有著相同的行為:
func newint() *int
func newint() *int
p := new(int)
q := new(int)
fmt.println(p == q) // "false"
new函式使用常見相對比較少,因為對應結構體來說,可以直接使用字面量語法建立新變數的方法會更靈活。
由於new只是乙個預定義的函式,它並不是乙個關鍵字,因此可以將new名字重新定義為別的型別。例如下面的例子:
func delta(old, new int) int
由於new被定義為int型別的變數名,因此在delete函式內部是無法使用內建的new函式的。
s2是int型別指標切片,直接存放int型別的指標位址就好
參考:go語言fmt.sprintf、fmt.printf(格式化輸出)
%t 輸出 go 語言語法格式的型別和值
fmt.printf("s2:%t\n", s2)
輸出
s2:*int
字元函式例子
要查詢以某個字結尾等於什麼的記錄 select from vehicle 車牌號以7結尾的資料記錄 select from vehicle t where trim t.veh no like 7 用函式的方式 select from vehicle t where substr trim t.ve...
C 建構函式 例子
建構函式,去掉this class person public person string name,string int age,double weight public void eatfood double quanity class program age weight firstman.n...
C 建構函式例子
已知string類定義如下 class string public string constchar str null 通用建構函式 string conststring another 拷貝建構函式 string 析構函式 string operater const string rhs 賦值函式...