python语言发明者 google_1小时入门Go语言 - 关于python和go联姻的尝试

为什么你要学Go语言

C语言比,复杂性低了很多。作者中有C语言的发明者。

与Python比,Go保持了接近C语言的性能, 它原生支持高并发

使用广泛,2020年3月TIOBE编程语言排行榜,Go已经冲进了前十了。著名的docker就是用Go写的

我为什么要学Go?

作为一个软件架构师,我不允许自己知识上有盲点。

环境准备

安装Go编译器

上官网 https://golang.google.cn/dl/ 在Featured downloads里根据你的操作系统下载最新版本。

双击打开,下一步下一步完成安装即可。

安装IDE

不管什么编程语言,我只用我的最爱支持几乎所有语言的 VSCode(https://code.visualstudio.com/) ,没安装,点击我下载安装。

写个HelloWorld

打开VSCode,新建个文件:

package main

import "fmt"

func main() {

fmt.Printf("hello, Go\n")

}

保存为hello.go 。这时候智能的VSCode会提示你安装Go的插件,点击install安装即可。

编译运行

直接运行

不需要编译就可以直接运行的,调试非常方便。 在cmd里,进入到hello.go所在的目录

root@testmode:~# go run hello.go

hello, Go

编译成exe,再运行

这种适合你要发布你的代码的场景。 同样,在cmd里,进入到hello.go所在的目录。

root@testnode:~# go build hello.go

root@testnode:~# ls

hello hello.go

root@testnode:~# ./hello

hello, Go

root@testnode:~#

编译为so,对外发布

不需要编译就可以直接运行的,在cmd里,进入到hello.go所在的目录

root@testnode:~# go build -buildmode=c-shared -o hello.so hello.go

root@testnode:~# ls

hello hello.go hello.so

root@testnode:~#

看,是不是多了个hello.so。这种编译到so的编译模式需要依赖gcc,windows下安装比较麻烦,所以,我是在Ubuntu下玩的。有人可能想,为什么要编译为so呢,因为是我python爱好者。我学Go,就是想通过Go来解决Python性能不足的问题。对于python项目中对性能要求特别高的模块,可以用go语言编写,再使用python的ctypes调用(第二天尝试没成功)。Oh,Shit。 No Perfect!

问题

第二天更新,今天一直在尝试使用python的ctypes来调用go 编译出来的动态链接库,但是很遗憾失败了。 我转眼又想,这个是必须的吗? 在微服务的时代里,我们还必须这样吗?

答案是"确实不必要"。因为在go里写一个http接口也是如此的简单。

来个实例吧。

package main

import (

"fmt"

"net/http"

)

func index(w http.ResponseWriter, req *http.Request) {

fmt.Fprintf(w, "Hello, world.\n")

}

func main() {

http.HandleFunc("/", index)

http.ListenAndServe("127.0.0.1:5000", nil)

}

因此,我不再纠结ctypes了,不要古代的强绑定。换个思路,选择微服务,像不像现代婚姻。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值