用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所补充规范, ...
随机推荐
- 3451: Tyvj1953 Normal 点分治 FFT
国际惯例的题面:代价理解为重心和每个点这个点对的代价.根据期望的线性性,我们枚举每个点,计算会产生的ij点对的代价即可.那么,i到j的链上,i必须是第一个被选择的点.对于i来说,就是1/dis(i,j ...
- BZOJ.4298.[ONTAK2015]Bajtocja(Hash 启发式合并)
题目链接 \(Description\) 给定\(d\)张无向图,每张图都有\(n\)个点.一开始,在任何一张图中都没有任何边. 接下来有\(m\)次操作,每次操作会给出\(a,b,k\),意为在第\ ...
- Python3基础之异常结构
自定义异常类 class ShortInputException(Exception): def __init__(self, length, atleast): Exception.__init__ ...
- 喵哈哈村的魔法考试 Round #8 (Div.2) 题解
喵哈哈村的美食面馆 签到题,就不停的if就好了. #include<bits/stdc++.h> using namespace std; string name[5]={"ni ...
- protobuf 测试使用
1 介绍 Protocol buffers are a flexible, efficient, automated mechanism for serializing structure ...
- 外卖ERP管理系统(二)
京门时代旗下外卖ERP管理系统是一款专注外卖行业的解决方案系统! 系统介绍: 1.外卖erp系统是一款集订单分发.一键派送.实时大屏监控.店铺进销存.仓储管理及数据分析为一体的智能化外卖管理系统.已服 ...
- [c#基础]ICloneable接口
摘要 该接口使你能够创建现有对象的副本的自定义的实现.该接口只提供了,一个Clone方法,实现对象的浅拷贝.有浅拷贝,那么就有相对应的深拷贝.但该接口并没有对我们提供,需要我们自己实现. 什么是浅拷贝 ...
- FDMEMTABLE将修改后的数据序列为JSON
FDMEMTABLE将修改后的数据序列为JSON procedure TForm1.Button3Click(Sender: TObject); var memtable: TFDMemTable; ...
- Android 获得手机屏幕真实的宽高
http://stackoverflow.com/questions/1016896/get-screen-dimensions-in-pixels WindowManager w = activit ...
- [Canvas]Bombman v1.04
Bombman是我仿造红白机上经典游戏爆破小人,用Canvas制作的一款网页版单机游戏, 自我感觉还是有一定的可玩性. 本游戏的胜利条件是用雷消灭所有怪物,但被怪物即使是擦边碰到或是炸弹火焰炸到就算失 ...