Big Endian 转换 Little Endian
Big Endian
低地址 高地址
----------------------------------------->
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 12 | 34 | 56 | 78 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Little Endian
低地址 高地址
----------------------------------------->
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 78 | 56 | 34 | 12 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
package main
import (
"fmt"
)
func LTB(inputb []byte) (r []byte) {
for i := len(inputb); i > 0; i-- {
r = append(r, inputb[i-1])
}
return r
}
func main() {
b := []byte{0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40}
for _, v := range b {
fmt.Printf("%x ", v)
}
fmt.Println()
ob := LTB(b)
for _, v := range ob {
fmt.Printf("%x ", v)
}
}
[ `go run LTB.go` | done: 156.289215ms ]
18 2d 44 54 fb 21 9 40
40 9 21 fb 54 44 2d 18
[ ~/WorkSpace/ ] #
Deffer 执行顺序
package main
import (
"fmt"
)
func A() {
fmt.Println("I'm A")
}
func B() {
fmt.Println("I'm B")
}
func C() {
fmt.Println("I'm C")
}
func D() {
fmt.Println("I'm D")
}
func main() {
defer A()
defer B()
defer func() {
defer C()
D()
}()
}
我跟面试官说的是要么A 要么D 结果面试官说是C 果断的执行一波
[ `go run DEFFER.go` | done: 140.839637ms ]
I'm D
I'm C
I'm B
I'm A
[ ~/WorkSpace/ ] #
有关 channel 阻塞我还没弄明白回头补上