Recent Posts

Go - pipelines

Ex. Make 3 channels and chan together, print in fmt.Println(<-channel) There is no way to check is a channel closed Close pipeline safely. Check rece...

Go - unbuffered channel

Unbuffered channel causes sender and receiver synchronized, called synchronized channel "When a value is sent on an unbuffered channel, the receipt of ...

Go - channel - basic

Declare ch := make(chan int) // unbuffered, send will be blocked until receive was called ch := make(chan int, 0) // unbuffered, send will be b...

Go - goroutine

Run f() in another goroutine: go f() To produce a race condition issue, can make for loop larger

Go - Type Switch

switch x.(type) { case: 。。 default:..} No fallthrough is allowed Reuse assert type result. switch x := x.(type) {...} Can combine more than one t...

Go - Type Assertion

X.(T)  X is interface, T is concrete type. When T is a concrete type, it assert dynamic type of X is identical to T. Result is the dynamic value wi...

Go - Interface value

Real type of an interface variable is decided dynamatically Need be careful when comparing interface, panic will occur when real type is not comparable ...

Go - Interface Satisfaction - 2

When a type value assign to a variable, it can call method declared with type value and pointer When a type pointer assign to a variable, it can call...

Go - Interface Satisfaction - 1

A function declared with type (not a pointer), can call method by type value. Can use (&t) to call method by address as well When a function d...

Go - Interface Contracts

Don't need implement interface, only method is enough Compile error if signature is wrong,  Although don't need declare "implements", but sti...

Go - encapsulation

Access control: upper case ecported to diiferent package It means the unit of encapsulation is package Difference Ex. type A int, can’t be encapsul...

Go - Method Values

Can assign method to a variable Ex. M = s.methodname; M() Can define func signature and assign implementation later Status will follow methods ...

Go - Methods - Pointer Receiver

Declare Method Method and Function can be the same name Method and Field can not have the same name Can declare another method name in the sa...

Go - Functions - 4

Must declare a func before let func call itself recursively. Otherwise compile error Loop will reuse variable address, so a new variable must be dec...

Go - Functions - 3

Can declare function without name. Called anonymous function. How client know it needs return value? => Because function signature has conc...