You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// ʕ ◔ϖ◔ʔ Go~// Pros: It can use in global// Cons: varvarxfloat64=10// Pros: short, no var// Cons: can't use in globaly:=float64(10)
Slice creation
// ʕ ◔ϖ◔ʔ Go~// *Type// It needs length. Can't omit.// Pros: it can have initial length// Cons: longslice:=make([]*Type, 0)
// Pros: it can have initial values and length, short// Cons: {}slice:= []*Type{}
slice:= []int{1, 2, 3}
array:= [10]int{1, 2, 3} // it is not slice, arrayarray:= [...]int{1, 2, 3} // omit length// Pros: It can use in global space// Cons: varvarslice []*Typevararray [10]*Type// It is not slice, array
// ʕ ◔ϖ◔ʔ Go~// Option 1: instance & :=, it needs {}anonymous:=Person{}
// Option 2: instance & varvaranonymousPerson// Option 3: pointer & :=, it needs {}anonymous:=&Person{}
// Option 4: pointer & :=anonymous:=new(Person)
// Option 5: pointer & varvaranonymous*Person=&Person{}
// Option 5: pointer & var & newvaranonymous*Person=new(Person)
// Wrong! it is just pointer! instance is not created!varanonymous*Person
# Pythonanonymous=Person()
With initial value
// ʕ ◔ϖ◔ʔ Go~// Option 1: initialize with composite literal// Pros: Easy and simple// Cons: It will be error if type has extra field, initializing map everyplace is boringtongpoo:=Person{"ymotongpoo", 30}
vartongpooPerson=Person{"ymotongpoo", 30}
tongpoo:=Person{"ymotongpoo", 30}
vartongpoo*Person=&Person{"ymotongpoo", 30}
// Option 2: field name// Pros: Easy and simple, It wont't be error evenif the type has extra field// Cons: Initializing map everyplace is boringtongpoo:=Person{name:"ymotongpoo", age:30}
vartongpooPerson=Person{name:"ymotongpoo", age:30}
tongpoo:=Person{name:"ymotongpoo", age:30}
vartongpoo*Person=&Person{name:"ymotongpoo", age:30}
// Option 3: initializer function// Pros: It can have complex initialization code// Cons: longfuncNewPerson(namestring, ageint) *Person {
obj:=new (Person)
obj.name=nameobj.age=agereturnobj
}
obj:=NewPerson("ymotongpoo", 30)