用Go语言实现一个简单的聊天机器人
一、介绍
目的:使用Go语言写一个简单的聊天机器人,复习整合Go语言的语法和基础知识。
软件环境:Go1.9,Goland 2018.1.5。
二、回顾
Go语言基本构成要素:标识符、关键字、字面量、分隔符、操作符。它们可以组成各种表达式和语句,而后者都无需以分号结尾。
- 标识符:程序实体,前者即为后者的名称。
- 关键字:被编程语言保留的字符序列,不能把它用作标识符。
- 字面量:值的一种标记法。
- 操作符==运算符:用于执行特定算术或逻辑操作的符号,操作的对象称为操作数。
数组:由若干相同类型的元素组成的序列。
切片(slice):可以看作是一种对数组的包装形式,它包装的数组称为该切片的底层数组。
函数和方法:一个函数的声明通常包括关键字func、函数名、分别由圆括号包裹的参数列表和结果列表,以及由花括号包裹的函数体。
func divide(dividend int,divisor ,int)(int,error){
}
//函数可以没有参数列表,也可以没有结果列表,但空参数列表必须保留括号,而空结果列表则不用
func printTab(){
//
}
三、程序(初版本)
代码仓库链接:https://github.com/OctopusLian/ChatRobot
package main import (
"bufio"
"os"
"fmt"
"strings"
) func main() {
inputReader := bufio.NewReader(os.Stdin) //准备从标准输入读取数据
fmt.Println("Please input your name:")
input,err := inputReader.ReadString('\n') //读取数据直到碰到 \n为止
if err != nil{
fmt.Printf("An error occurred:%s")
os.Exit() //异常退出
}else {
//用切片操作删除最后的 \n
name := input[:len(input)-]
fmt.Printf("Hello,%s! What can I do for you?\n",name)
}
for{
input,err = inputReader.ReadString('\n')
if err != nil{
fmt.Printf("An error occurred:%s\n",err)
continue
}
input = input[:len(input)-]
//全部转换为小写
input = strings.ToLower(input)
switch input {
case "":
continue
case "nothing","bye":
fmt.Println("Bye!")
//正常退出
os.Exit()
default:
fmt.Println("Sorry,I didn't catch you.")
}
}
}

参考资料
用Go语言实现一个简单的聊天机器人的更多相关文章
- TensorFlow练习13: 制作一个简单的聊天机器人
现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...
- socket实例C语言:一个简单的聊天程序
我们老师让写一个简单的聊天软件,并且实现不同机子之间的通信,我用的是SOCKET编程.不废话多说了,先附上代码: 服务器端server.c #include <stdio.h> #incl ...
- [SignalR]一个简单的聊天室
原文:[SignalR]一个简单的聊天室 1.说明 开发环境:Microsoft Visual Studio 2010 以及需要安装NuGet. 2.添加SignalR所需要的类库以及脚本文件: 3. ...
- 用C语言编写一个简单的词法分析程序
问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...
- JMS学习(四)-一个简单的聊天应用程序分析
一,介绍 本文介绍一个简单的聊天应用程序:生产者将消息发送到Topic上,然后由ActiveMQ将该消息Push给订阅了该Topic的消费者.示例程序来自于<JAVA 消息服务--第二版 Mar ...
- 用ServletContext做一个简单的聊天室
这里主要是ServletContext的一个特性:ServletContext是一个公共的空间,可以被所有的客户访问.由此可见ServletContext比cookie和session的作用范围要大[ ...
- 通过python 构建一个简单的聊天服务器
构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使 ...
- 基于websocket实现的一个简单的聊天室
本文是基于websocket写的一个简单的聊天室的例子,可以实现简单的群聊和私聊.是基于websocket的注解方式编写的.(有一个小的缺陷,如果用户名是中文,会乱码,不知如何处理,如有人知道,请告知 ...
- WebSocket介绍和一个简单的聊天室
WebSocket是什么呢? WebSocket一种在单个 TCP 连接上进行全双工通讯的协议.WebSocket通信协议于2011年被IETF定为标准RFC 6455,并被RFC7936所补充规范, ...
随机推荐
- CSDN 博客 美化 个性化
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha ========= ======== <a href=" http:// ...
- Django源代码中model字段
to_field='绑定的主键字段(默认为ID)' limit_choices_to = {'过滤的choices字段':choices的ID} related_name = 关联表反向查找自己的名称 ...
- Cesiumjs初学第一天
官网demo地址: https://cesiumjs.org/Cesium/Apps/Sandcastle/?src=Geometry%20and%20Appearances.html&lab ...
- 早期(编译器)优化--Java语法糖的味道
1.泛型与类型擦除 泛型的本质是参数化类型的应用,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口和泛型方法.在泛型没有出现之前,只能通过 ...
- phpstorm破解
由于JetBrains系列新版本注册激活发生了变化,所以原来的激活方式已经不能在使用. 只能用新的方式来破解了.此方式支持所有系列的新版版.包括IDEA15,PHPSTORM10,WEBSTORM11 ...
- 关于C#报空Object is null 错误的看法
昨天项目的一个问题 :在切换场景页面的时候,报空指针的错,总显示没有找到对象.由于代码是之前就早写好的了,只是根据最上层领导的意见修改下个别显示UI,所以也就一定是后来的那些代码问题.果不其然,加的新 ...
- JVM Debugger Memory View for IntelliJ IDEA
Posted on August 19, 2016 by Andrey Cheptsov Every day we try to find new ways to improve developer ...
- Word批量删除所有书签
Word中的书签功能可快速.准确定位文档中特定的位置,经常用于模板定制.文档产出等. 可一直以来,书签功能存在一个不便的操作,即无法批量删除,只能单个删除,操作极不友好. 解决方案 我用代码暂时还改变 ...
- .net跨平台分析软件
https://marketplace.visualstudio.com/items?itemName=ConnieYau.NETPortabilityAnalyzer
- dubbo服务启动的方式
dubbo服务启动的方式: 1.dubbo自带的脚本, 2.直接用main方法启动dubbo的spring容器,参见dubbo-test里的各个例子 3.dubbo的spring boot start ...