Jeśli mam struct jak tenGo: Czy tworzę zbyt wiele wartości?
type myStruct struct {
mystring string
myint int
}
i jeśli mam funkcji, która zwraca nowy myStruct jak ten
func New() myStruct {
s := myStruct{}
s.mystring = "string"
s.myint = 1
return s
}
Bo najpierw zapisać go w „s” zmienna przed wpuszczeniem go , czy moja funkcja faktycznie tworzy 2 wartości myStruct zamiast jednego?
A jeśli tak, czy lepszą praktyką jest upewnienie się, że najpierw nie przechowuję go w zmiennej?
nie jestem pewien, ale pamiętam było jak składnia 'func Nowa() (s myStruct) {...} 'które spowodowałoby przydzielenie wyniku dla ciebie. To może być szybciej. Czy używasz google go lub gccgo? –
Używam polecenia Google go. Byłbym ciekawy, czy ta składnia miałaby taki sam skutek, czy też jakoś uniknie problemu. –
zobacz akceptowaną odpowiedź ... definiując ją jako 'func New() (s myStruct)' pozwoli kompilatorowi przydzielić strukturę dla ciebie przed wejściem do twojego ciała funkcji. powinno działać tak samo jak odpowiedź od jdi. nadal nie możesz być tego pewien, ponieważ specyfikacje/implementacje go zmieniają się na stałe. –