『壹』 golang怎么引入其它文件,像php的include一样
问题的关键在于GOPATH的设置,import是必须的,但是还有个条件就是要把自定义包的路径加入到GOPATH中。可以使用go env查看一下设置。 do it ~~~,开始可能会混乱,多试几次就好了。针对GO 的 2018年11月的最新版本。。。
『贰』 如何用nodejs 解密 通过golang加密的文件
以下代码采用AES192,128的类似var crypto = require('crypto');var key = crypto.randomBytes(192/8); // 替换成自己需要的keyvar iv = crypto.randomBytes(128/8); // 替换成自己需要的ivvar algorithm = 'aes192';function encrypt(text){ var cipher = crypto.createCipheriv(algorithm, key, iv);cipher.update(text); return cipher.final('hex');}function decrypt(encrypted){ var decipher = crypto.createDecipheriv(algorithm, key, iv);decipher.update(encrypted, 'hex'); return decipher.final('utf8');}var content = 'hello';var crypted = encrypt('hello');console.log( crypted ); // 输出: decrypted = decrypt( crypted );console.log( decrypted ); // 输出:he
『叁』 golang json:怎么替代yaml:
安装EasyDataTransform在Mac上就可以解决。安装EasyDataTransform在Mac上,开始轻松的数据转换,将要显示重复项的Excel电子表格拖到EasyDataTransform上。将添加一个粉红色的输入项请注意右侧窗格中的JSON数据已自动“展平”到表格中。您可以将右窗格中的Format下拉菜单设置为Long或Wide,具体取决于您希望表格具有更多行还是更多列,确保选择了粉红色的输入项,单击左窗格中的ToFile按钮,将出现一个窗口。设置新文件名和位置。选择YAML文件作为文件类型。添加并选择了一个绿色输出项。YAML文件会立即创建,无需“运行”任何内容您可以在右侧窗格中更改YAML文件编码。
『肆』 golang 如何在ini文件指定位置 写入字符串
1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。一般的C语言教程都有文件操作一章,可以找本教材进一步学习。2、例程:#include<stdio.h>int a;char b,c[100];int main(){ FILE * fp1 = fopen("input.ini", "r");//打开输入文件 FILE * fp2 = fopen("output.ini", "w");//打开输出文件 if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出 puts("不能打开文件!"); rturn 0; } fscanf(fp1,"%d",&a);//从输入文件读取一个整数 b=fgetc(fp1);//从输入文件读取一个字符 fgets(c,100,fp1);//从输入文件读取一行字符串 printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数 fputs(c,fp2);//向输出文件写入一行字符串 fputc(b,fp2);//向输出文件写入一个字符 fprintf(fp2,"%d",a);//向输出文件写入一个整数 fclose(fp1);//关闭输入文件 fclose(fp2);//关闭输出文件,相当于保存 return 0;}
『伍』 如何Golang开发Android应用
环境配置好复杂,我不得不唠叨几句。需要下载golang1.4rc版,下载ndk,然后编译。 然后用go get 下载gobind这个工具, 然后,将写好的代码用gobind转化下,然后使用特殊的编译命令,将代码编译成.so文件,将生成的相关文件,放到android studio的项目中。然后java代码中,利用jni调用引用的代码。… 好,接着往下看吧。环境准备一台Linux 64的机器一个带有AndroidStudioIDE的开发机器因为环境配置实在复杂,所以我们引入的docker。docker pull codeskyblue/docker-goandroiddocker run –rm -ti codeskyblue/docker-goandroid bashcd example; echo "view example projectsdocker起来之后,什么就都配置好了,NDK啦,java啦,GO的环境变量了,等等,并且还预装了vim,gradle,tmux,git,syncthing,svn开始写代码写代码之前,先约定下目录结构go的代码都放在src/golib下,编译使用make.bash编译脚本,看下这个文件树.|– app.iml|– build.gradle|– libs/armeabi-v7a # go编译生成的so文件| `– libgojni.so|– main.go_tmpl # 一个模板文件,先不用管它|– make.bash # 编译脚本,用来生成.so和Java代码`– src|– golib| |– hi| | |– go_hi�0�2�0�2�0�2 # 自动生成的代码| | | `– go_hi.go| | `– hi.go # 需要编写的代码| `– main.go`– main|– AndroidManifest.xml|– java| |– go # 自动生成的代码| | |– Go.java| | |– Seq.java| | `– hi| | `– Hi.java| `– me/shengxiang/gohello # 主要的逻辑代码| `– MainActivity.java`– res我已经写了一个例子,先直接搞下来编译下,试试行不行(就算不行问题应该也不大,因为大问题都被我消灭了)cd GoHello/app./make.bash../gradlew build一切顺利的话在build/outputs/apk下应该可以看到app-debug.apk这个文件。(剧透下,这个文件只有800多K)编译好的我放到qiniu上了,可以点击下载看看下面可以尝试改改,我抛砖引玉说下打开hi.go这个文件hi.go的内容,比较简单,我们写Go代码主要就是这部分// Package hi provides a function for saying hello.package hiimport "fmt"func Hello(name string) {fmt.Printf("Hello, %s!\n", name)return "(Go)World"}文件末尾添加下面这行代码func Welcome(name string) string {return fmt.Sprintf("Welcome %s to the go world", name)}使用./make.bash重新编译下打开MainActivity.java 修改下OnClickListener事件button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String message = Hi.Welcome("yourname");Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();}});编译运行下,把生成的apk安装到手机上试试。原理解读(有兴趣的接着看)首先说下gobind这个工具。go_hi/go_hi.go这个文件时通过gobind这个工具生成的,用来配合一个简单的程序,生成.so文件// go_hi.gopackage go_hiimport ("golang.org/x/mobile/bind/seq""example/hi")func proxy_Hello(out, in *seq.Buffer) {param_name := in.ReadUTF16()hi.Hello(param_name)}func init() {seq.Register("hi", 1, proxy_Hello)}这个简单的程序内容是这样的// main.gopackage mainimport ("golang.org/x/mobile/app"_ "golang.org/x/mobile/bind/java"_ "example/hi/go_hi")func main() {app.Run(app.Callbacks{})}src/MyActivity.java文件内容是这样的import …import go.Go; // 引入Go这个包import go.hi.Hi; // gobind生成的代码public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Go.init(getApplicationContext()); // 初始化两个线程Hi.Hello("world");}}其中有一句Go.init(…)这里再看go.Go这个包是什么样子的public final class Go {// init loads libgojni.so and starts the runtime.public static void init(Context context) {… 判断该函数是否该执行的代码 — 省略 –System.loadLibrary("gojni"); // gojni需要这句new Thread("GoMain") {public void run() {Go.run(); // run()是一个native方法}}.start();Go.waitForRun(); // 这个也是一个native方法// 这部分可以理解为,启动了一个后台线程不断的接收结果到缓存中。new Thread("GoReceive") {public void run() { Seq.receive(); }}.start();}private static boolean running = false;private static native void run();private static native void waitForRun();}MyActivity.java中还有段代码是 Hi.Hello("world");,打开Hi.java路径在src/go/hi/Hi.java,这个文件也是gobind生成的,是用来给java方便的调用.so文件// Hi.java// File is generated by gobind. Do not edit.package go.hi;import go.Seq;public abstract class Hi {private Hi() {} // uninstantiablepublic static void Hello(String name) {go.Seq _in = new go.Seq();go.Seq _out = new go.Seq();_in.writeUTF16(name);Seq.send(DESCRIPTOR, CALL_Hello, _in, _out); // 下面接着说}private static final int CALL_Hello = 1;private static final String DESCRIPTOR = "hi";}Seq.send这部分实际上最终调用的是一段go代码func Send(descriptor string, code int, req *C.uint8_t, reqlen C.size_t, res **C.uint8_t, reslen *C.size_t) {fn := seq.Registry[descriptor][code]in := new(seq.Buffer)if reqlen > 0 {in.Data = (*[maxSliceLen]byte)(unsafe.Pointer(req))[:reqlen]}out := new(seq.Buffer)fn(out, in)seqToBuf(res, reslen, out)}转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦
『陆』 sublime text 3 怎么编译golang
1.安装git因为golang是通过git来管理远程包的,所以我们首先要安装gitgit安装比较简单,直接下一步即可(在Windows Explorer integration选项中将“Git Bash here”和“Git GUI here”打对勾),需要了解具体安装的可以看这里。2.安装Golang1) 首先到https://golang.org/dl/选择适合你系统的安装包2)我这里选择的是:go1.4.2.windows-amd64.msi,下载完成安装到指定目录即可。我这里是(E:\Go)。3)安装完成后环境变量已经自动设置好了,可以呼出cmd命令行输入命令查看> go env可以看到,已经出现go命令了。如果你的不能出现,那可能是环境变量设置的问题。进入我的电脑->高级设置->环境变量查看下,GOROOT变量是否存在,以及Path变量中是否也设置了GOROOT。没有的话,新增一个GOROOT变量,路径则输入你刚刚安装完成后Go的根目录,如我的是:E:\Go\。然后编辑Path变量,在最后面新增";%GOROOT%bin"。4)go命令依赖一个环境变量:GOPATH,这不是Go的安装目录,而是你的工作(工程)目录(你的代码都会在该目录下)。GOPATH可以有多个,windows以分号(;)进行区分,Linux系统是冒号(:),当有多个GOPATH时,默认会将go get的内容放在第一个目录下。这里我们新建一个GOPATH变量,以我的为例:F:\mygo。3.安装Sublime Text3注意:sublime是收费软件,不注册也可以正常使用,只是保存次数达到一定的数量的时候会提示购买;忽略后可以正常使用。这里需要安装一个sublime的pakcage control功能,用于接下来安装sublime插件。1)在打开软件后,按下快捷键 Ctrl+`,(`这个符号为英文半角模式下,按下 Tab 键上方、数字键1左边的那个按键),此时会打开一个命令窗口,复制并输入以下内容,最后回车:import urllib.request,os,hashlib; h = '' + ''; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)2)重启sublime之后,你就可以发现在 Preferences 这个菜单下出现了菜单项 Package Control,如图:4. 安装GoSublime插件1)在sublime中,按住快捷键 shift + ctrl + p,在弹出框中输入install package,如图:2)回车,会出现如下图(可能需要稍微等待下,可以看sublime最下面的状态):3)输入gosublime,回车(可能需要稍微等待下,可以看sublime最下面的状态),如图:4)gosublime安装完成后,Preferences -> package settings -> GoSublime -> Settings – Uesrs需要配置下GOPATH,GOROOT,如图:5)在打开的窗口中输入以下内容,路径请自行替换,ctrl+s保存。{"env": {"GOPATH": "F:/mygo","GOROOT": "E:/Go"}}6)重启sublime,在GOPATH中的src新建一个hello.go文件,可以看到代码自动补全已经出来了,:)至此,sublime text3 + golang 安装完成。
『柒』 golang依次替换字符串中相同的值
不是的,分情况。golang支持两种类型的字符串字面量:解释型字符串:双引号括起来的字符串(““),转义字符(如等)会被替换掉。非解释型字符串:用反引号(键盘左上角上的)括起来的字符串,转义字符不会被解释且可跨行(原样输出)
『捌』 gomod如何手动替换包
之前在项目中遇到过etcd的版本不一致,导致无法编译.最终是因为版本不一致的问题。先删除vendor:rm-rfvendor或手动删除。1.再替版本:gomodedit-require=google.golang.org/[email protected]。2.下载指定版本v1.26.0:goget-u-xgoogle.golang.org/[email protected]。3.然后再gomodvendor。
『玖』 go语言怎么修改字符串中的某一个字符
go语言的字符串是UTF-8编码的、不可改变的字节序列。
要修改字符串,只能以原串为基础,创建一个新串。下面的图中是一个参考示例,提供了以原串为蓝本,创建新串的两种方法。
输出
『拾』 Go桌面上的文件夹图标怎样替换
你好!感谢您使用GO桌面,您遇到的问题可以这样解决:在GO桌面上,长按文件夹,出现“换图标”,选择您要更换的样式。