问题描述:
比如新浪财经美股行情中心,涨跌额和涨跌幅,正数显示红色,负数显示绿色
在用Go语言开发时,如何实现这样的效果?
第一种方法:不使用js
Go语言内置了一些进行模板渲染的函数,在官方源码/src/text/template/funcs.go
中,专门用于GoWeb模板中的数据判断或比较
type FuncMap map[string]interface{
}
var builtins = FuncMap{
"and": and,
"call": call,
"html": HTMLEscaper,
"index": index,
"js": JSEscaper,
"len": length,
"not": not,
"or": or,
"print": fmt.Sprint,
"printf": fmt.Sprintf,
"println": fmt.Sprintln,
"urlquery": URLQueryEscaper,
// Comparisons
"eq": eq, // ==
"ge": ge, // >=
"gt": gt, // >
"le": le, // <=
"lt": lt, // <
"ne": ne, // !=
}
根据字面意思以及注释就知道哪个是干什么的,比如eq
就是判断两个元素是否相等,lt
就是判断a元素是否小于b元素。
在.html
文件中的用法是
{
{if gt .Percent 0.0}}
即判断.Percent
是否大于0,如果Percent
是整数,就要写成0,即跟0比较;如果Percent
是小数,就要写成0.0,否则就因会类型不一致报错。
接下来用一个完整的例子,看一下到底怎么使用。
建立一个项目,结构如下:
.
├── main.go
├── test
│ └── test.go
└── view
└── test.html
2 directories, 3 files
也就只有三个文件,不过就把如何注册处理函数,如何启动一个服务器,如何给前端传递数据,以及前端如何渲染数据都概括了。
main.go
文件
package main
import (
"net/http"
"GoProject/test"
)
func main() {
http.HandleFunc("/", test.Test)
http.ListenAndServe(":8080", nil)
}
这里注册了一个处理函数test
,做具体的逻辑处理,然后启动服务器,监听8080
端口
test.go
文件
package test
import (
"fmt"
"html/template"
"net/http"
)
type Data struct {
Country string
Percent float64
}
var Datas []*Data
//初始化数据
func init() {
d1 := &Data{
"利比里亚", 4.50}
d2 := &Data{
"布隆迪", 3.90}
d3 := &Data{
"阿富汗", 3.85}
d4 := &Data{
"喀麦隆", 2.00}
d5 := &Data{
"香港", 1.00}
d6 := &Data{
"古巴", -0.01}
d7 := &Data{
"摩尔多瓦", -