Go win32
先说的让人兴奋的吧,“GO的库开发在windwos上尽然是一摸一样的啊”
C:\go-pro\go-self-package>go build gin-main.go
2017/09/20 14:39 1,936,384 gin-main.exe
2017/09/20  14:35                89 gin-main.go
               2 个文件      1,936,473 字节
               2 个目录 261,820,047,360 可用字节
C:\go-pro\go-self-package>gin-main.exe
1 is ok
2 is ok
这就是我为什么坚持GO的原因,名厂名牌,就是不一样啊,比那个WebAssembly强啊!!!!
为什么这么说呢,因为,我们伟大的GO尽然可以调用win32系统函数啊!!!!!
哇,哈哈哈,这不是强一点儿,是上了天啊!!!!!!
windows前端的兄弟姐妹们,我们开GO吧
一 DEMO
//win.go 显示磁盘剩余空间,win32系统函数"Kernel32.dll"=>"GetDiskFreeSpaceExW"
import (
      "syscall"
      "unsafe"
	  "log"
)
func main() {
  kernel32, _ := syscall.LoadLibrary("Kernel32.dll")
	  defer syscall.FreeLibrary(kernel32)
	  GetDiskFreeSpaceEx, _ := syscall.GetProcAddress(syscall.Handle(kernel32), "GetDiskFreeSpaceExW")
  lpFreeBytesAvailable := int64(0)
	  lpTotalNumberOfBytes := int64(0)
	  lpTotalNumberOfFreeBytes := int64(0)
  r, _, _ := syscall.Syscall6(uintptr(GetDiskFreeSpaceEx), 4,
				        uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("F:"))),
				        uintptr(unsafe.Pointer(&lpFreeBytesAvailable)),
				        uintptr(unsafe.Pointer(&lpTotalNumberOfBytes)),
				        uintptr(unsafe.Pointer(&lpTotalNumberOfFreeBytes)), 0, 0)
  if 0!=r {
		  log.Printf("Free %dmb", lpTotalNumberOfFreeBytes/1024/1024)
	  }
}
//运行
go build win.go
C:\go-pro\go-win32>win.exe
2017/09/20 14:48:55 Free 257812mb
看到没有,无与伦比啊,哈哈哈
Finally:
如此美妙,大家真的可以认真考虑一下,把GO跑到windows下了。
前途无量!!!!
Go win32的更多相关文章
- C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper
		前言 在开发应用程序时,通常只让程序运行一个实例.所以,就要判断程序是否已经运行. 下面是我自己在项目中使用到,封装好的帮助类.有 普通的 C# 应用程序 和 Windows CE 和 Windows ... 
- java.lang.UnsatisfiedLinkError: %1 不是有效的 Win32 应用程序。
		JNA 调用 dll 库时,保错: ///////////////// 通过 JNA 引入 DLL 库 //////////// /** * ID_FprCap.dll 负责指纹的采集, 指纹仪的初始 ... 
- 初次认识 C# win32 api
		第一次接触win32api,刚开始的时候有点迷迷糊糊的. Windows API 就是windows应用程序接口. win api向上就是windows应用程序,向下就是windows操作系统核心. ... 
- [老文章搬家] [翻译] 深入解析win32 crt 调试堆
		09 年翻译的东西. 原文见: http://www.nobugs.org/developer/win32/debug_crt_heap.html 在DeviceStudio的Debug编译模式下, ... 
- Virus.Win32.Virlock.b分析
		0x00 样本说明 分析样本是被0b500d25f645c0b25532c1e3c9741667的样本感染得到.感染前的文件是Tcpview.exe,一款windows网络连接查看工具. 感染前后文件 ... 
- cocos2d-x 从win32到android移植的全套解决方案
		引言:我们使用cocos2d-x引擎制作了一款飞行射击游戏,其中创新性地融入了手势识别功能.但是我们在移植过程中遇到了很多的问题,同时也发现网上的资料少而不全.所以在项目行将结束的时候,我们特地写了这 ... 
- Git使用出错:Couldn‘t reserve space for cygwin‘s heap, Win32
		今天使用Git在命令行下更新代码遇到了问题,起初觉得是自己安装某软件导致冲突,从网上搜索了一下找到类似问题,成功解决问题. 错误信息如下: E:\storm-sql>git pull origi ... 
- ATL封装IE内核启示:使用Win32/ATL建立窗口
		开发大型GUI界面程序MFC当仁不让,但如果是开发图形应用程序,并不需要大规模界面控件,没有必要链接庞大的MFC库,直接使用platform sdk会很麻烦,这时ATL中的关于Windows的封装就是 ... 
- Win32 OpenProcess打开进程失败,返回5无权限操作
		Win32 OpenProcess打开进程失败,返回5无权限操作,相信你会碰到这样的事,在IDE中可以,单独却不可以了,其实这时就需要提权了,否则是无法打开的,OpenProcess提权至Debug即 ... 
- win32进程名查找进程PID
		1. #include <Psapi.h> #pragma comment(lib, "Psapi.lib") DWORD GetProcIDFromName(LPCT ... 
随机推荐
- python web篇 Django centos 命令版
			新建立一个虚拟环境,与其他python 包隔开互不影响 首先新建立一个目录,命名为xx, python3 下操作 $:python -m venv ll_env 注意在有多个Python环境下,使用 ... 
- CH 3401 - 石头游戏 - [矩阵快速幂加速递推]
			题目链接:传送门 描述石头游戏在一个 $n$ 行 $m$ 列 ($1 \le n,m \le 8$) 的网格上进行,每个格子对应一种操作序列,操作序列至多有 $10$ 种,分别用 $0 \sim 9$ ... 
- 模板倍增LCA 求树上两点距离 hdu2586
			http://acm.hdu.edu.cn/showproblem.php?pid=2586 课上给的ppt里的模板是错的,wa了一下午orz.最近总是被坑啊... 题解:树上两点距离转化为到根的距离 ... 
- GatewayWorker
			GatewayWorker介绍 一.工作原理 Register.Gateway.BusinessWorker进程启动 Gateway.BusinessWorker进程启动后向Register服务进程发 ... 
- [skill] mmap / fwrite / write linux磁盘读写的分层结构
			转自:http://www.cnblogs.com/zhaoyl/p/5901680.html 看完此文,题目不言自明.转自 http://blog.chinaunix.net/uid-2710571 ... 
- mysql报错Establishing SSL connection without server's identity verification is not recommended
			使用mysql数据库时报错:Establishing SSL connection without server's identity verification is not recommended ... 
- scala-LinkedList
			LinkedList每隔元素乘以3: import scala.collection.mutable.LinkedList var list1=LinkedList.apply(1,2,3,4,5) ... 
- JavaScript 学习笔记-HTML&&DOM
			HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. JavaScript 能够 ... 
- vue指令v-html中使用过滤器filters功能
			Vue 2.0 不再支持在 v-html 中使用过滤器 解决方法: 1:全局方法(推荐) 2:computed 属性 3:$options.filters(推荐) 1:使用全局方法: 可以在 Vue ... 
- innodb_flush_method理解【转】
			innodb_flush_method这个参数控制着innodb数据文件及redo log的打开.刷写模式,对于这个参数,文档上是这样描述的: 有三个值:fdatasync(默认),O_DSYNC,O ... 
