当前位置: 首页 > news >正文

私服网站备案域名注册商有哪些

私服网站备案,域名注册商有哪些,服饰网站建设规划书,山东菏泽网站建设交叉编译只是为了能在一个平台上编译出其他平台可运行的程序,Go 作为一个跨平台的语言,它提供的类库势必也是跨平台的,比如说程序的系统调用相关的功能,能根据所处环境选择对应的源码进行编译。让编译器只对满足条件的代码进行编译…

交叉编译只是为了能在一个平台上编译出其他平台可运行的程序,Go 作为一个跨平台的语言,它提供的类库势必也是跨平台的,比如说程序的系统调用相关的功能,能根据所处环境选择对应的源码进行编译。让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就是另外一个概念叫—条件编译。

在 Go 中,也称之为Build Constraints 编译约束,添加编译约束的方式有2种分别:

  • 编译标签(build tag)
  • 文件后缀

编译标签

编译标签是一种通过在源码文件顶部添加注释,来决定文件是否参与编译的约束方式。其格式如下:

// +build <tags>

注意: // +build 的下一行必须是空行,否则会被解析为包注释。

// +build linux// main package comment
package main

tags说明:

  • 以空格分开表示 AND
  • 以逗号分开表示 OR
  • !表示 NOT

标签可以指定为以下内容:

- 操作系统,环境变量中 GOOS 的值,如: linux 、 darwin 、 windows 等等。
- 操作系统的架构,环境变量中 GOARCH 的值,如: arch64 、 x86 、 i386 等等。
- 使用的编译器, gc 或者 gccgo 。
- 是否开启CGO, cgo 。
- golang版本号:比如Go Version 1.1为 go1.1 ,Go Version 1.12版本为 go1.12 ,以此类推。
- 其它自定义标签,通过 go build -tags 指定的值。

例如,编译条件为 (linux AND 386) OR (darwin AND (NOT cgo))

// +build linux,386 darwin,!cgo

另外一个文件可以有多个编译约束,比如条件为 (linux OR darwin) AND amd64

// +build linux darwin
// +build amd64

也可以使用 ignore 标签将一个文件从编译中排除。

// +build ignore

文件后缀

除了编译标签,第二种添加编译约束的方法是通过源码文件的文件名实现的,这种方案比构造标签方案更简单。编译器也会根据文件后缀来自动选择编译文件:

$filename_$GOOS.go
$filename_$GOARCH.go
$filename_$GOOS_$GOARCH.go$filename : 源文件名称。
$GOOS : 表示操作系统,从环境变量中获取。
$GOARCH : 表示系统架构,从环境变量中获取。

后缀的顺序记住不要颠倒,后缀中同时出现系统和架构名时,需要保持 $filename_$GOOS_$GOARCH.go 的顺序。

在 Go 的每个内置库里都有很多以不同系统名结尾的文件。下面是 Go 的 os 内置库源代码的部分截图:
文件后缀添加编译约束

两种添加编译限制的方式该如何选择?

构建标签和文件名后缀在功能上是重叠的。比如,一个名为 mypkg_linux.go 的文件,再包含构建标签 // +build linux 会显得多余。

通常来说,当只有一个特定平台需要指定时,我们选择文件名后缀的方式。比如:

mypkg_linux.go         // 只在 linux 系统编译
mypkg_windows_amd64.go // 只在 windows amd 64位 平台编译

相反,如果你的文件需要指定给多个平台或体系架构使用,或者你需要排除某个特定平台时,我们选择构建标签的方式。比如:

// 在所有类unix平台编译
// +build darwin dragonfly freebsd linux netbsd openbsd// 在非Windows平台编译
// +build !windows

go:build 与 +build 的区别

//go:build

是 Go 1.17 中引入的新条件编译指令格式。它旨在替换

// +build

指令。为何要采用新的格式呢?

对比一下新旧格式的区别就知道了:

//go:build linux && amd64 || darwin
// +build linux,amd64 darwin

注意://go:build之间没有空格;// +build之间有空格;
显而易见的优势:

  • go:build 这种格式,对 coder 来说,更容易理解其逻辑组合
  • 与 //go:embed 和 //go:generate 这些命令相比较,格式上进行了统一

错误检查

用go vet命令也可以检测到这个缺少空行的错误,初期可以用这个命令来避免缺少空行的错误

go vet mypkg
mypkg.go:1: +build comment appears too late in file
exit status 1

查看环境

go env

参考

  • Go build tag 实现条件编译

  • 条件编译

  • 由一条编译报错信息,引出两个Go编译的重要知识

  • golang 编译约束 //go:build dev // +build命令,自定义文件后缀编译

http://www.ritt.cn/news/22847.html

相关文章:

  • 网站制作要求网络营销试题库及答案
  • wap游戏引擎关键词优化推广排名
  • 网站链接只显示到文件夹怎么做的永久观看不收费的直播
  • 生产企业做网站有用吗深圳网站建设推广
  • 做彩票网站代理犯法吗6seo分析seo诊断
  • 合川建网站合肥网站优化平台
  • 如何做国外网站外链
  • B2C网站开发功能表今天发生的重大新闻事件
  • 做vlogger的网站有哪些在线域名ip查询
  • 网站分辨率兼容怎么做全网营销平台
  • 如何让百度口碑收录自己的网站cba排名最新排名
  • 个人做网站创业seo网络优化公司哪家好
  • 301 网站 怎么做软文营销的写作技巧有哪些
  • 网站域名设计中国进入一级战备2023
  • 浙江可以做会计题目的网站什么都不懂能去干运营吗
  • 南京学做网站网站搜索排名优化价格
  • wordpress 测速优化关键词技巧
  • 想学网站建设电商网站定制开发
  • 广东建设网站网络营销推广专员
  • 好看的免费的小说网站模板软文兼职
  • 如何搭建一个自己的服务器南昌seo方案
  • 崇左做网站公司广州商务网站建设
  • 胶州网站建设哪家好黑帽seo是什么意思
  • ios软件开发培训班福建百度seo排名点击软件
  • 彩票网站可以做哪些活动百度站长工具怎么关闭
  • 政府大型网站建设重庆黄埔seo整站优化
  • 临朐网站建设哪家好重庆seo入门教程
  • 购物网站的前台功能网络搭建是干什么的
  • 哪些是+joomla做的网站百度热议
  • 公众号开发展模式下文章归类到菜单最新seo自动优化软件