Pull to refresh
0
0
Игорь Карпухин@TrueKeller

Software engineer

Send message

Интерфейс изнутри устроен так:

type iface struct {
    tab  *itab
    data unsafe.Pointer
}

Если слегка модифицировать пример автора, Вам станет ясно почему в первом случае s==i это false, а во втором true:

package main

import (
	"fmt"
	"reflect"
)

type (
	I interface{}
	S struct{}
)

func main() {
	var i I
	var s *S
	fmt.Println("Type of I", reflect.TypeOf(i))
	fmt.Println("Type of S", reflect.TypeOf(s))
	fmt.Println(s, i)                       // nil nil
	fmt.Println(s == nil, i == nil, s == i) // t,t,f: то есть они как бы равны, но в то же время не равны.
	i = s
	fmt.Println("Type of I", reflect.TypeOf(i))
	fmt.Println("Type of S", reflect.TypeOf(s))
	fmt.Println(s, i)                       // nil nil
	fmt.Println(s == nil, i == nil, s == i) // t,f,t: то есть они как бы не равны, но в то же время равны.
}
Type of I <nil>
Type of S *main.S
<nil> <nil>
true true false
Type of I *main.S <--- теперь i это *S
Type of S *main.S <--- 
<nil> <nil>
true false true

Если вы присвоили что-то в пустой интерфейс - itab уже не nilпоэтому во втором случае i == nil будет false

А как быстро Вы получили разрешение? Я ждал 6 месяцев. По поводу Берлина — мне в автошколе рассказывали, что в этом году недостаток персонала в Bürgeramt. Не успевают обрабатывать все заявления.
Все правильно, сдавать теорию и практику нужно. Посещать теорию необязательно. Но для этого нужно договор с автошколой, augentest и erste hilfe подать вместе с заявлением о замене в Bürgeramt. Там оно и обрабатывалось 6 месяцев. Это в Берлине.
Бюрократия действительно работает, но не везде. Пример — ответ на заявление на замену российских прав на немецкие, занял у Burgetamt 6 месяцев.

Information

Rating
Does not participate
Location
München, Bayern, Германия
Date of birth
Registered
Activity