golang

GOROOT、GOPATH、GOBIN、project目录 _(转)

六月ゝ 毕业季﹏ 提交于 2019-12-06 12:25:18
前言:我觉得java程序员学golang很容易上手。关于GOROOT、GOPATH、GOBIN这些环境变量的设置,我隐约感觉到了java的影子(尽管我是一个C++程序员),唯一和java不同的是不能设置“.”。 另外,golang的设计也很明显的透露着“约定优于配置”的原则。这在java很多框架里面很常见。golang的环境变量设计也是如此。从android和golang我觉得google喜欢java。 不了解java的C++程序员,可以尝试全新去理解golang。 GOROOT golang安装路径。 GOPATH 官方解释,请google。go工作环境中常常用到的一个很重要的环境变量(这种设计类似java)。具体用途:go命令常常需要用到的,如go run,go install, go get等。允许设置多个路径,和各个系统环境多路径设置一样,windows用“;”,linux(mac)用“:”分隔。 在linux(Mac)下,为了方便,一般配置在~/.bash_profile中。 book:~ wukebing$ vi ~/.bash_profile //编辑 book:~ wukebing$ source ~/.bash_profile //编辑完成后,使立即生效 例如:我的GOPATH设置(MAC下) export GOPATH=$HOME/workspace/go

[Go] protobuffer 的环境配置

最后都变了- 提交于 2019-12-06 08:52:26
一般使用gprc是需要使用protobuf作为数据传输的格式标准,可以对要传输的对象结构体进行序列化 先安装protoc,找到对应版本,下载直接把二进制文件复制到环境变量可以访问到的地方就行 https://github.com/protocolbuffers/protobuf/releases 安装go的依赖包和工具 git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc git clone https://github.com/golang/protobuf.git $GOPATH/src/github.com/golang/protobuf go install github.com/golang/protobuf/protoc-gen-go 创建文件比如orders.proto,required必填 ,后面那个1和2是字段顺序 syntax = "proto2"; message Orders { required int32 order_id=1; required string title=2; } 来源: https://www.cnblogs.com/taoshihan/p/11973997.html

golang之运算符

前提是你 提交于 2019-12-06 08:39:05
目录 一、golang之运算符 1. 算术运算符 2. 关系运算符 3. 逻辑运算符 4. 位运算符 5. 赋值运算符 一、golang之运算符 Go 语言内置的运算符有:(比python少了一个成员运算符) 算术运算符 关系运算符 (对应python中的比较运算法) 逻辑运算符 位运算符 赋值运算符 1. 算术运算符 没什么好说的,就是加减乘除,取余 + - * / % 注意: ++ (自增)和 -- (自减)在Go语言中是单独的语句,并不是运算符 2. 关系运算符 这个也没什么好说的,就是 if 判断中使用的那些东西。 == != > >= < <= 3. 逻辑运算符 就是连接条件用的,指定条件与条件之间的关系 && 对应python中的 and || 对应python中的 or ! 对应python中的 not 4. 位运算符 随便看看就好,基本没有用到的地方 位运算符对整数在内存中的二进制进行操作 & 与运算(两位均为1才为1) | 或运算(两位有一个为1就为1) ^ 异或(两位不一样则为1) << 左移n位就是乘以2的n次方(“a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0) >> 右移n位就是除以2的n次方(“a>>b”是把a的各二进位全部右移b位) 5. 赋值运算符 = 简单的赋值运算符,将一个表达式的值赋给一个左值 += 相加后再赋值 -= 相减后再赋值

[翻译] effective go 之 Errors

倖福魔咒の 提交于 2019-12-06 06:59:47
Errors Library routines must often return some sort of error indication to the caller. As mentioned earlier, Go's multivalue return makes it easy to return a detailed error description alongside the normal return value. By convention, errors have type error, a simple built-in interface. 库函数通常必须返回一些错误提示给调用者 正如之前提到的 Go函数支持多值返回 可以很容易地返回正常返回值的同时 返回详细的错误提示 错误有相应的类型error 它是一个内建的简单接口 如下: type error interface { Error() string } A library writer is free to implement this interface with a richer model under the covers, making it possible not only to see the error but also to provide some context. For

[翻译] effective go 之 Control structures

拜拜、爱过 提交于 2019-12-06 06:59:37
Control structures The control structures of Go are related to those of C but differ in important ways. There is no do or while loop, only a slightly generalized for; switch is more flexible; if and switch accept an optional initialization statement like that of for; and there are new control structures including a type switch and a multiway communications multiplexer, select. The syntax is also slightly different: there are no parentheses and the bodies must always be brace-delimited. Go的控制结构和C接近 但是在关键的地方还是有些区别 Go中没有while循环 switch用起来更加灵活 if和switch可以有可选的初始化语句 Go增加了新的控制结构 包含类型switch常用来判断接口的动态类型

Windows 下GCC编译C程序调用Golang静态库和C动态库

爱⌒轻易说出口 提交于 2019-12-06 06:59:04
1. 编译golang 静态库 package main import ( "C" "fmt" ) //export Foo func Foo(a, b int) int { return a + b } //export Bar func Bar() { fmt.Println("Hello, I'm LiLei.") } func main() { } 使用命令编译得到静态库和头文件 go build -o main.a -buildmode=c-archive main.go 2. 编写C的动态库 demo.h int foo(); int bar(); demo.c #include "demo.h" #include <stdio.h> int foo(){ int a[3] = {1,2,3}; int s = 0; int len = sizeof(a)/sizeof(a[0]); printf("len=%d\n", len); for(int i=0; i<len;i++){ s+=a[i]; } printf("calc s=%d\n", s); return s; } int bar(){ printf("hello, I am Lilei"); return 32; } gcc -shared -fpic -o demo.so demo.c 会生成demo

golang之基本数据类型

回眸只為那壹抹淺笑 提交于 2019-12-06 06:56:30
目录 一、golang之基本数据类型 1. 整型 (1)有符号(范围是负数、0和正数) (2)无符号(范围是0和正数) (3)特殊整型 (4)数字字面量语法 2. 浮点型 3. 复数类型 4. 布尔类型 5. 字符串类型 (1)常见的字符串转义符 (2)多行字符串 (3)字符串常用的方法 6. byte 和 rune 类型 (1) byte (2) rune (3)总结( byte 和 rune 的对比) (4)修改字符串 7. 类型转换 一、golang之基本数据类型 共有6大基本数据类型 整型 浮点型 复数类型 布尔类型 字符串类型 byte和rune类型 1. 整型 按有无符号分为两类 (1)有符号(范围是负数、0和正数) int8、int16、int32、int64 ,后面的数字表示二进制时的长度 其中, uint8 就是我们熟知的 byte 型, int16 对应C语言中的 short 型, int64 对应C语言中的 long 型。 例子: int8 范围是 (-128 到 127) 的整数,负数比正数多一个 (2)无符号(范围是0和正数) uint8、uint16、uint32、uint64 例子: uint8 范围是 (0 到 255) 的整数 (3)特殊整型 uint : 32位操作系统上就是 uint32 ,64位操作系统上就是 uint64 int :

vscode打造golang开发环境

倖福魔咒の 提交于 2019-12-06 06:42:58
我的电脑系统是windows10,windows具有用户友好的界面,但不适合用来搭建开发环境,所以本篇文章介绍的方法是:使用windows中的vscode打造远程服务器centos系统上的go语言开发环境。 1.下载并安装好vscode编辑器(安装时,将复选框全部勾上) 下载地址:https://code.visualstudio.com/ 2.vscode上安装Remote Development插件 第一步:按下快捷键Ctrl+Shift+X,进入插件管理页面,搜索并安装插件Remote Development 第二步:windows上安装openssh客户端,这里提供一个使用powershell安装的方法 首先,以管理员身份打开powershell 然后,输入命令在线查询可获取的安装包 Get-WindowsCapability -Online | ? Name -like 'OpenSSH*' 如果状态显示NotPresent的话,可以使用命令进行安装,命令为Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 提示:随着 Windows 10 2018 年 4 月更新的发布,OpenSSH 客户端已正式推出并在 Windows 10 中默认安装。 第三步:准备一台centos虚拟机或者ubuntu虚拟机

golang fmt格式“占位符”

痞子三分冷 提交于 2019-12-06 06:41:41
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} %#v 相应值的Go语法表示 Printf("#v", people) main.Human{Name:"zhangsan"} %T 相应值的类型的Go语法表示 Printf("%T", people) main.Human %% 字面上的百分号,并非值的占位符 Printf("%%") % 布尔占位符 占位符 说明 举例 输出 %t true 或 false。 Printf("%t", true) true 整数占位符 占位符 说明 举例 输出 %b 二进制表示 Printf("%b", 5) 101 %c 相应Unicode码点所表示的字符 Printf("%c", 0x4E2D) 中 %d 十进制表示 Printf("%d", 0x12) 18 %o 八进制表示 Printf("%d"

关于 golang build

一曲冷凌霜 提交于 2019-12-06 04:43:57
如何编译 golang 的编译还是比较容易的,用法如下: go build [-o output] [-i] [build flags] [packages] 上面方括号标记的参数,都可以没有…… 最简的操作就是直接 go build ,这样操作会直接找到当前文件夹下的 main 包,并编译之。 比较常用的就是 -o 了,指定输出文件,比如: go build -o 666 main.go 此时会将 main.go 编译为二进制文件666(windows下会输出成 666.exe ) go 是支持交叉编译的,请参见 golang开发环境配置备忘 更多设置 具体操作可以参考命令说明,在你的命令行输入 go help build 查看细节。 我在这列举若干 缩小输出文件体积 go 编译出的文件,实话说体积挺大的。一个重要原因是其中包含了调试信息,我们可以通过编译参数使其不包含调试信息,这样输出的体积会小一些。 # 移除 调试信息(-w) 和 符号表(-s) go build -o main -ldflags "-w -s" main.go 上述操作使用 -ldflags 参数指定 -w 和 -s , 分别表示在编译时不包含调试信息和符号表,此举可以较好地缩减二进制文件体积。 编译时写入全局变量 go 可以通过编译参数,在编译时对变量进行赋值。一般情况下