Size: a a a

2020 August 13

с

сонная википедия... in Go-go!
Yaroslav
Так variableB все ещё указывает на нее
а если variableB существует меньше чем A?
источник

p

pragus in Go-go!
сонная википедия
а если variableB существует меньше чем A?
Каким образом?
источник

с

сонная википедия... in Go-go!
pragus
Каким образом?
функция внутри тела создает variableB и возвращает A
источник

p

pragus in Go-go!
сонная википедия
функция внутри тела создает variableB и возвращает A
Чем это принципиально отличается от func(v A) *A { return &v } ?
источник

с

сонная википедия... in Go-go!
pragus
Чем это принципиально отличается от func(v A) *A { return &v } ?
type A struct {
 Field1 string
}

type B struct {
 Field1 string
 Field2 string
}

func f() A {
 v := &B{"a", "b"}

 return *(*A)(unsafe.Pointer(v))
}

а если так?
источник

p

pragus in Go-go!
сонная википедия
type A struct {
 Field1 string
}

type B struct {
 Field1 string
 Field2 string
}

func f() A {
 v := &B{"a", "b"}

 return *(*A)(unsafe.Pointer(v))
}

а если так?
Тут копия будет. Не понимаю в чём проблема
источник

p

pragus in Go-go!
сонная википедия
type A struct {
 Field1 string
}

type B struct {
 Field1 string
 Field2 string
}

func f() A {
 v := &B{"a", "b"}

 return *(*A)(unsafe.Pointer(v))
}

а если так?
И откуда гарантии что v будет аллоцирован на стеке?
источник

с

сонная википедия... in Go-go!
pragus
Тут копия будет. Не понимаю в чём проблема
когда будет освобождена строка Field2?
источник

p

pragus in Go-go!
сонная википедия
когда будет освобождена строка Field2?
В твоём примере не имеет значения весь этот кастинг
источник

с

сонная википедия... in Go-go!
pragus
В твоём примере не имеет значения весь этот кастинг
почему?
источник

p

pragus in Go-go!
сонная википедия
type A struct {
 Field1 string
}

type B struct {
 Field1 string
 Field2 string
}

func f() A {
 v := &B{"a", "b"}

 return *(*A)(unsafe.Pointer(v))
}

а если так?
Подтекать будет если f будет возвращать *A
источник

p

pragus in Go-go!
Потому что у тебя написано

return A{Field1: v.Fieild1}
источник

с

сонная википедия... in Go-go!
pragus
Потому что у тебя написано

return A{Field1: v.Fieild1}
это понятно, но отследил ли Go Field2?
источник

p

pragus in Go-go!
сонная википедия
это понятно, но отследил ли Go Field2?
Всмысле? gc может вообще v грохнуть при выходе из f
источник

с

сонная википедия... in Go-go!
pragus
Всмысле? gc может вообще v грохнуть при выходе из f
вообще интересно получилось, просто "a" вернулось

https://go.godbolt.org/z/Kab4Ps
источник

Н

Никита in Go-go!
Запускаю процесс через exec.Command. Нужно проверять, что процесс что-то просит в Stdin. Каким образом можно реализовать эту проверку?
источник

ВС

Владимир Столяров... in Go-go!
Проверять stdout на наличие приглашения ко вводу
источник

с

сонная википедия... in Go-go!
Никита
Запускаю процесс через exec.Command. Нужно проверять, что процесс что-то просит в Stdin. Каким образом можно реализовать эту проверку?
об этом только ОС знает
источник

с

сонная википедия... in Go-go!
Владимир Столяров
Проверять stdout на наличие приглашения ко вводу
+, разве что так
источник

DP

Daniel Podolsky in Go-go!
а что она там знает-то?
источник