0

0

探讨go中的var是否能初始化结构体

藏色散人

藏色散人

发布时间:2021-11-30 15:48:17

|

2866人浏览过

|

来源于csdn

转载

本文由go语言教程栏目给大家介绍关于golang中var是否可以初始化结构体问题,希望对需要的朋友有所帮助!

背景

上一篇小文章,简单的用goland搭建一个最简单的golang的demo,没有什么实际价值,用的golang语法也比较少,这个小节我们完成一个简单的crud的操作,快速了解golang的一些常用的操作,能够熟练掌握golang基本的语法

语法提前了解

  • string转成int 在golang中使用strconv.Atoi方法
  • golang中方法的返回值可以有多个,这个跟java不一样,例如map[id]这样的方式,第一个返回值就是value,第二个返回值是bool类型,表示是否存在

  • 和java中json序列化的方式比较像,反序列化是json.Unmarshal方法,第一个参数是字节数组,第二个参数是序列化对象的"地址",要加一个&,序列化的方式json.Marshal方法,注意这个方法返回的字节数组

上面这个小节用的语法在下面的练习中是经常用到的,小伙伴们可以简单地记忆一下

练习

1.我们简单地定义一个User类,用golang完成关于这个结构体实例的增删改查,我们定义一个结构体如下所示,有三个属性Id,Name,Age

2f24b99a46a45b04b7968cc046caf7d7.png

2.因为是在内存中做增删改查的,没有用到数据库的,所以我们要像java一样定义一个全局变量,作为一个容器来保存数据,如下图源码所示,我们使用关键字var定义一个全局变量map,并初始化一条记录

4ec17e453e8b88759a4a565acbc9d54b.png

3.然后定义四个"RequestMapping"如下所示

0d801a12fac0d273d9cfdc262dad4f70.png

3.1 getUser方法主要的逻辑就是获取传递的参数id,然后根据id去全局变量中获取user基本信息

4fb54bd1855ee27c57422c4ff1d4820b.png

3.2 saveUser我们处理POST请求,现在开发中一般传递过来的json数据,我们解析json到对应,然后保存到我们全局变量中

e1ca7906bd6626186c595be8c792a17b.png

3.3 updateUser和saveUpdate比较像,为了简单,我们这边只判断如果全局map中对应的id存在的话,就变更这个id对应的user对象,就不进行属性比较和替换了

dc8fd053fd8d3c6829cefdd255a9a23e.png

3.4 deleteUser就更加简单了,直接删除map中对应的id就可以了

fa2ca073e9a71bf891bd50d1d038981a.png

测试

搜索引擎优化高级编程PHP版(含源码)
搜索引擎优化高级编程PHP版(含源码)

搜索引擎优化在传统意义上是营销团队的工作。但在本书里,我们将从另外一个角度看待搜索引擎优化,让编程人员也参与到搜索引擎优化的队伍中来。 搜索引擎优化(SEO)不只是营销部门的工作。它必须经过Web站点开发人员的深思熟虑,贯穿了从最初的Web站点设想开始的整个开发过程。通过改变Web站点的体系结构和修改其表现技术,能够极大地提升搜索引擎的排名和流量水平。 这本独特的手册专门为PHP开发人员或涉足

下载

1.getUser的测试

efb52e36868903f1e21344ec49a1944e.png

2.saveUser的测试

72e751f33c312ed3110ae4f39ba1fad2.png

29577f137160db46ec42076e044966ae.png

3.updateUser的测试

7298f07a6b34ab76fbfabaef08f068ae.png

d53ac59fd94eda46fd6bf1676abcedc4.png

4.

b60acda122b063a15021636b7b5bb615.png

小结

本小节主要完成了在内存中做增删改查,其实如果你完全掌握golang的基本语法,你肯定会觉得很小儿科,不过这个没有关系,有些新同学肯定也是有一点收获的,如果你仔细看上面的代码,你肯定会发现一些问题,你会发现我们解析参数的方式只有2种,一种是localhost:9090/user?id=1这种获取id的方式,获取是获取post请求中的json,如果我们想像spring mvc中@requestMapping(value="/user/{name}/种是localhost:9090/user?id=1这种获取id的方式,获取是获取post请求中的json,如果我们想像spring mvc中@requestMapping(value="/user/{name}/{id}")这样的方式就不行了,然后通过@pathvariable方法来获取参数,这个在我们日常工作中很有用,但是非常遗憾,golang 原生并不是支持这样相对比较复杂的参数绑定工作的,这个我们将通过一个数据结构Trie来解决这个问题

源码地址

https://github.com/BazingaLyn/jarvis

如果你喜欢本系列的入门教程,希望你能关注点赞收藏,素质三连谢谢~

彩蛋

如果你手敲代码的时候,你会发现(writer http.ResponseWriter, request *http.Request)需要写很多遍,goland提供了快捷键快速生成方法了,但是每个人快捷键设置的可能不一样,但是可以用如下的方式快速生成方法

bc122ae54a267c80502ff96e021bf704.png

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

837

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

741

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

736

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

399

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

430

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
nginx浅谈
nginx浅谈

共15课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号