问题描述:
比如新浪财经美股行情中心,涨跌额和涨跌幅,正数显示红色,负数显示绿色

在用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{
"摩尔多瓦", -0.90}
d8 := &Data{

本文介绍了两种在Go Web开发中实现表格数据正负判断并设置不同样式的方案。第一种方法利用Go内置的模板功能,通过判断元素是否大于0并在HTML模板中应用样式。第二种方法借助JavaScript,动态判断并设置元素样式,需要引入额外的库和编写JS代码。两种方法均能实现新浪财经美股行情中心类似的涨跌颜色效果。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



