
golang内幕
灵动笔记
十年回归,研究技术、分享心得
展开
-
golang内幕之程序启动流程
文件:startup.go ,代码如下:package mainimport "fmt"func main() { fmt.Println("startup")}上面是golang程序的入口函数,即main包中的main函数。但main.main并发golang真正的程序入口,golang存在一个运行时(runtime),与我们的编写的golang代码一起编译、链接成可执行...原创 2019-07-17 11:33:17 · 1908 阅读 · 0 评论 -
golang内幕之协程状态切换
本文承接上一篇文章【golang内幕之程序启动流程】【https://blog.youkuaiyun.com/QQ1130141391/article/details/96197570】在【golang内幕之程序启动流程】文中我们提到了在主线程中启动了main Goroutine,并提到了schedule是一轮的协程调度,并且是永不返回的,这正是我们研究的入口点;另外也提到了go func(){}...原创 2019-07-18 16:02:01 · 2761 阅读 · 0 评论 -
golang内幕之defer-panic-recover
问题:defer适用在什么场景?我们先看下下面一段拷贝文件的代码:func CopyFile_1(src, dst string) (wlen int64, err error) { sfd, err := os.Open(src) if err != nil { return 0, err } dfd, err := os.Create(dst) if err != n...原创 2019-07-20 16:54:45 · 336 阅读 · 0 评论 -
golang内幕之for-range-value
func ForRangeValue_1() { var mapAges map[string]int mapAges = make(map[string]int) mapAges["name-1"] = 1 mapAges["name-2"] = 2 mapAges["name-3"] = 3 var newAges map[string]*int newAges = make...原创 2019-07-20 17:32:41 · 317 阅读 · 0 评论 -
golang内幕之for-go-statement
func ForGoStatement_1() { go func() { fmt.Println("go-func-1") }()}func main() { ForGoStatement_1()}参考如下文章,会更清楚golang的协程:【golang内幕之程序启动流程】【https://blog.youkuaiyun.com/QQ1130141391/article/deta...原创 2019-07-20 19:14:15 · 449 阅读 · 0 评论 -
golang内幕之组合
type Parent struct { Name string Age int}func (p Parent) String() string { return fmt.Sprintf("Name:%s, Age:%d", p.Name, p.Age)}func StructCombine_1() { var p1 = Parent{} fmt.Println(p1)...原创 2019-07-20 19:36:21 · 415 阅读 · 0 评论 -
golang内幕之数组
func Array_1() { var arr1 [3]int arr1[0] = 1 arr1[1] = 2 arr1[2] = 3 fmt.Fprintf(os.Stdout, "%T - %v\n", arr1, arr1) arr2 := [3]int{ 1, 2, 3, } fmt.Fprintf(os.Stdout, "%T - %v\n", arr2...原创 2019-07-21 22:36:37 · 292 阅读 · 0 评论