golang笔记17

编程入门 行业动态 更新时间:2024-10-26 22:28:33

golang<a href=https://www.elefans.com/category/jswz/34/1770047.html style=笔记17"/>

golang笔记17

golang笔记17--编译调试go源码

  • 前置条件
  • 编译源码
  • 在 fmt 包中加自定义函数
  • 说明

当前go语言越来越流行了,各大厂商都有加大go工程师的需求,作为go语言的学习者,我们除了要了解如何使用go语言外,也有必要了解一下如何编译、调试go源码。
本文基于Ubuntu22.04系统和较新的go1.20.7, 让大家能够快速知道如何编译、调试go源码。

前置条件

  1. 确保安装go并配置好环境变量
    $ go version
    go version go1.20.7 linux/amd64
    
  2. 安装好gcc , ubuntu 系统直接使用apt即可
    apt install gcc
    
  3. 在src同目录新建 VERSION 文件,内容为当前go版本,此处为1.20.7
  4. 注意不要将src放在安装包目录,以防覆盖了现有的go 二进制文件

编译源码

go env -w GOPROXY=,direct
cd src
go get golang/x/net@latest
go mod tidy
go mod vendor
bash make.bash
输出:
Building Go cmd/dist using /home/xg/soft/go1.20.7/go. (go1.20.7 linux/amd64)
Building Go toolchain1 using /home/xg/soft/go1.20.7/go.
Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1.
Building Go toolchain2 using go_bootstrap and Go toolchain1.
Building Go toolchain3 using go_bootstrap and Go toolchain2.
Building packages and commands for linux/amd64.
---
Installed Go for linux/amd64 in /home/xg/soft/go1.20.7/go-dev
Installed commands in /home/xg/soft/go1.20.7/go-dev/bin编译后生产的文件如下(多了bin和pkg文件夹):
xg@xg:~/soft/go1.20.7/go-dev$ ls
bin  pkg  src  VERSION

在 fmt 包中加自定义函数

在 fmt.print.go 中新增 PrintlnXG 函数,如下

func PrintlnXG(a ...any) (n int, err error) {Fprintln(os.Stdout, "hello PrintlnXG, add by xg")return Fprintln(os.Stdout, a...)
}


重新编译生成 bin/go 二进制文件;
重新写一个hello.go 函数, 调用自定义的 fmt.PrintlnXG 函数, 如下所示:

package mainimport "fmt"func main() {fmt.Println("test self define function!")fmt.PrintlnXG("hello xg's function")
}

执行后,成功输出 hello PrintlnXG, add by xg 了,如下图

说明

  1. 测试系统 ubuntu22.04 Desktop
  2. go1.20.7

更多推荐

golang笔记17

本文发布于:2023-12-06 22:31:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1669174.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:笔记   golang

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!